@echo off
setlocal enabledelayedexpansion

REM 设置源目录（基于脚本位置计算）
set "SCRIPT_DIR=%~dp0"
set "BASE_DIR=%SCRIPT_DIR%..\.."
REM 确保路径规范化 - 解决..\问题
for %%A in ("%BASE_DIR%") do set "BASE_DIR=%%~fA"
set "SRC_DIR=%BASE_DIR%\src\ui"

REM 设置目标目录（桌面下的qml文件夹）
set "DESKTOP_DIR=%USERPROFILE%\Desktop"
set "DEST_DIR=%DESKTOP_DIR%\qml"

REM 创建目标目录（如果不存在）
if not exist "%DEST_DIR%" mkdir "%DEST_DIR%"

REM 获取源目录的父目录 - 用于相对路径计算
for %%A in ("%SRC_DIR%\..") do set "SRC_PARENT=%%~fA"

REM 遍历源目录所有qml文件（包括子目录）
for /R "%SRC_DIR%" %%F in (*.qml) do (
    REM 使用文件遍历变量获取相对路径
    set "filepath=%%F"

    REM 获取相对路径的可靠方法
    set "relpath=%%~F"
    set "relpath=!relpath:%SRC_PARENT%\=!"

    REM 处理路径：将子目录结构转换为下划线格式
    set "flatname=!relpath:\=_!"

    REM 移除原始扩展名并添加.txt
    set "flatname=!flatname:.qml=!.txt"

    REM 确保目标文件名合法
    set "flatname=!flatname: =_!"  REM 替换空格
    set "flatname=!flatname:^&=and!" REM 处理&符号

    REM 复制文件 - 使用绝对路径
    echo 正在复制: %%F → %DEST_DIR%\!flatname!
    copy /Y "%%F" "%DEST_DIR%\!flatname!" >nul
)

echo 操作完成！所有qml文件已复制到 %DEST_DIR%
endlocal